// SISTEMA : SISTEMA DE IDENTIFICACAO CRIMINAL
// PROGRAMA : SCRP20CH
// OBJETIVO : TESTE PARA PESQUISA FONETICA
package br.com.vti.sisp_sicrim.antigo.controller.programa;

import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.vti.sisp_sicrim.antigo.controller.tela.Scrp20chA;
import br.com.vti.sisp_sicrim.antigo.model.SicCadastro;
import br.com.vti.sisp_sicrim.antigo.util.ExceptionProgram;
import br.com.vti.sisp_sicrim.antigo.util.Sessao;
import br.com.vti.sisp_sicrim.antigo.util.UtilBean;

/**
 * Classe : Scrp20ch OBJETIVO : TESTE PARA PESQUISA FONETICA *
 * 
 * @author Incode - Data: mai/2014
 * 
 */
@Resource
@Path("/antigo/scrp20ch")
public class Scrp20ch {
	// Views utilizadas
	SicCadastro criminalView = new SicCadastro();
	// Telas/relatorios utilizados
	Scrp20chA scrp20chA;
	// Includes utilizados
	// Areas globais / session
	// Funcoes/subrotinas
	FuncoesGerais funcoes = new FuncoesGerais();
	Result result;
	Sessao sessao;
	Boolean primeiraVez = false;
	Scrp20ch scrp20chAnterior;
	String faseproc = "0";

	// private long jJ = 0;

	private Scrp20chA preMapas() {
		scrp20chA = new Scrp20chA(true, sessao);
		return scrp20chA;
	}

	public Scrp20ch(Result result, Sessao sessao) {
		this.result = result;
		this.sessao = sessao;
	}

	@Post
	public void executar(Scrp20chA scrp20chA) {
		try {
			main(scrp20chA);
		} catch (Exception e) {
			throw new ExceptionProgram(e, sessao, this.getClass().getSimpleName());
		}
	}

	private void main(Scrp20chA pscrp20chA) {
		if (pscrp20chA == null) {
			primeiraVez = true;
			// scrp20chA = new Scrp20chA (primeiraVez);
			scrp20chA = preMapas();
			scrp20chA.setNavegar("../scrp20ch/executar");
			result.include("scrp20chA", scrp20chA);
			sessao.setAtributo("SCRP20CH", this);
			scrp20chA.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
			return;
		} else {
			restaurarEstados(pscrp20chA);
		}
		// Repeat

		scrp20chA.receberTela(false, result);
		if (scrp20chA.getJnome().trim().equals("")) {
			return;
		}
		// jJ = 0;
		funcoes.phonNome = scrp20chA.getJnome();
		// Phonet phonet = new Phonet ();
		funcoes.phonet(funcoes.phonArea);
		while (criminalView.pesquisaNomeCompletoPhon(funcoes.phonCod)) {
			// report.gravaRelatorio() ;
			UtilBean.mensagemTexto(criminalView.getNomeCompleto(), criminalView.getNomePai(), criminalView.getNomeMae(), criminalView.getApelidoAlcunhas());
		}
		result.include("scrp20chA", scrp20chA);
		sessao.setAtributo("SCRP20CH", this);
		scrp20chA.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
	}

	private void restaurarEstados(Scrp20chA pscrp20chA) {
		this.scrp20chAnterior = (Scrp20ch) sessao.getAtributo("SCRP20CH");
		if (pscrp20chA != null) {
			scrp20chA = pscrp20chA;
		} else {
			scrp20chA = this.scrp20chAnterior.scrp20chA;
		}
		scrp20chA.setSessao(sessao);
		this.faseproc = this.scrp20chAnterior.faseproc;
	}
}
